using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using Flujo.Incidencias;
using ConexionBBDD.Incidencias;

namespace Interfaz.Incidencias
{
    public partial class DialogoIncidencia : Form
    {
        private Incidencia incidencia = null;
        private GestionIncidencias gestIncidencias;

        public DialogoIncidencia()
        {
            this.gestIncidencias = new GestionIncidencias();

            InitializeComponent();
            this.Text = "Nueva incidencia";

            configurarComboBox();
            this.estado.Text = "Abierta";
            this.fecha.Format = DateTimePickerFormat.Custom;
            this.fecha.CustomFormat = "HH:mm:ss dd/MM/yyyy";
            this.fecha.Value = DateTime.Now;
            this.prioridad.Text = "No definida";
        }


        public DialogoIncidencia(Incidencia incidencia)
        {
            this.gestIncidencias = new GestionIncidencias();

            InitializeComponent();
            this.Text = "Modificar incidencia";

            this.fecha.Value = incidencia.fecha;
            this.descripcion.Text = incidencia.descripcion;

            String foo;
            switch (incidencia.prioridad)
            {
                case 1:
                    foo = "Baja";
                    break;
                case 2:
                    foo = "Media";
                    break;
                case 3:
                    foo = "Alta";
                    break;
                case 4:
                    foo = "Urgente";
                    break;
                default:
                    foo = "No definida";
                    break;
            }
            this.prioridad.Text = foo;

            if (incidencia.estado)
                this.estado.Text = "Abierta";
            else
                this.estado.Text = "Cerrada";

            configurarComboBox();
            this.asignada.SelectedValue = incidencia.idTrabajador;
            this.tipo.SelectedValue = incidencia.idTipo;
        }


        private void configurarComboBox()
        {
            this.asignada.DataSource = this.gestIncidencias.listarTrabajadores();
            this.asignada.DisplayMember = "nombre";
            this.asignada.ValueMember = "T_Trabajadores_ID";

            this.tipo.DataSource = this.gestIncidencias.listarTipoIncidencias();
            this.tipo.DisplayMember = "nombre";
            this.tipo.ValueMember = "T_Tipo_Incidencias_ID";
        }

        public Incidencia getIncidencia()
        {
            return this.incidencia;
        }


        private void asignarIncidencia_CheckedChanged(object sender, EventArgs e)
        {
            if (this.asignarIncidencia.Checked)
            {
                this.asignada.Enabled = true;
                this.asignada_label.Enabled = true;
            }
            else
            {
                this.asignada.Enabled = false;
                this.asignada_label.Enabled = false;
            }
        }



        private void guardar_Click(object sender, EventArgs e)
        {
            DateTime gc_fecha = this.fecha.Value;
            String gc_descripcion = this.descripcion.Text;

            Int16 gc_prioridad;
            switch (this.prioridad.Text)
            {
                case "Baja":
                    gc_prioridad = 1;
                    break;
                case "Media":
                    gc_prioridad = 2;
                    break;
                case "Alta":
                    gc_prioridad = 3;
                    break;
                case "Urgente":
                    gc_prioridad = 4;
                    break;
                default:
                    gc_prioridad = 0;
                    break;
            }

            bool gc_estado = (this.estado.Text == "Abierta");
            Int32 gc_idTipo = (Int32)this.tipo.SelectedValue;

            Int32 gc_idTrabajador;
            if (this.asignarIncidencia.Checked)
            {
                gc_idTrabajador = (Int32)this.asignada.SelectedValue;
            }
            else
            {
                gc_idTrabajador = -1;
            }

            this.incidencia = new Incidencia(gc_fecha, gc_descripcion, gc_idTipo, gc_prioridad, gc_estado, gc_idTrabajador);

            this.Close();
        }


        private void cancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}